package edu.yngsxy.wkstudy.core.ai.service;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;

/**
 * 可序列化的消息类 - 用于Redis存储.创建一个可序列化的自定义消息类，并在与 Redis 和 AI 服务交互时进行适当的转换。
 * Jackson 无法反序列化 cn.hutool.ai.core.Message 类，因为它缺少默认构造函数或其他必要的创建器。让我们修改代码来解决这个问题。
 */
public class AiMessageDto implements Serializable {
    private final String role;
    private final Object content;

    @JsonCreator
    public AiMessageDto(
            @JsonProperty("role") String role,
            @JsonProperty("content") Object content) {
        this.role = role;
        this.content = content;
    }

    // Getter方法
    public String getRole() { return role; }
    public Object getContent() { return content; }

    // 转换为Hutool的Message对象
    public cn.hutool.ai.core.Message toHutoolMessage() {
        return new cn.hutool.ai.core.Message(role, content);
    }

    // 从Hutool的Message对象创建
    public static AiMessageDto fromHutoolMessage(cn.hutool.ai.core.Message message) {
        return new AiMessageDto(message.getRole(), message.getContent());
    }
}
